La transition fondamentale en informatique à haute performance consiste à passer d'un modèle d'exécution séquentielle centré sur le CPU à un modèle déconnecté producteur-consommateur où le CPU gère le flux tandis que le GPU fonctionne de manière indépendante. La compréhension essentielle est que le GPU n'est pas conçu pour être piloté comme un périphérique strictement synchrone; traiter le GPU de cette manière crée un goulot d'étranglement de type « arrêt et attente ».
1. Le cycle de vie du flux de travail
Dans une optique asynchrone, le développeur ne s'arrête pas à la fin de chaque tâche. Au contraire, il alloue la mémoire, démarre les noyaux, et copie les résultats en plaçant des requêtes non bloquantes dans une file matérielle.
2. Surmonter les blocages
Lorsque l'hôte est obligé de synchroniser après chaque opération, l'écart d'exécution — le temps de trajet entre le CPU et le GPU — domine les performances. En utilisant l'asynchronisme, le CPU continue à travailler pendant que le GPU traite son flux, maximisant ainsi la saturation du matériel.
$$\text{Temps total} = \max(\text{Travail CPU}, \text{Travail GPU}) + \text{Charge de synchronisation}$$